@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ======================================
echo   MQTT项目服务器环境检查
echo ======================================
echo.

set PASS=0
set FAIL=0

REM 1. 检查操作系统
echo 1. 操作系统信息
echo    系统: %OS%
ver
echo.

REM 2. 检查必需软件
echo 2. 必需软件检查
where node >nul 2>nul
if %errorlevel% equ 0 (
    echo [√] Node.js: 已安装
    set /a PASS+=1
    node -v
) else (
    echo [×] Node.js: 未安装
    set /a FAIL+=1
)

where npm >nul 2>nul
if %errorlevel% equ 0 (
    echo [√] npm: 已安装
    set /a PASS+=1
    npm -v
) else (
    echo [×] npm: 未安装
    set /a FAIL+=1
)

where git >nul 2>nul
if %errorlevel% equ 0 (
    echo [√] Git: 已安装
    set /a PASS+=1
) else (
    echo [!] Git: 未安装 (可选)
)
echo.

REM 3. 检查可选软件
echo 3. 可选软件检查
where pm2 >nul 2>nul
if %errorlevel% equ 0 (
    echo [√] PM2: 已安装
    set /a PASS+=1
    pm2 -v
) else (
    echo [!] PM2: 未安装 (建议安装)
    echo    安装命令: npm install -g pm2
)
echo.

REM 4. 检查端口占用
echo 4. 端口可用性检查
netstat -an | findstr ":3002" >nul
if %errorlevel% equ 0 (
    echo [!] 端口 3002: 已被占用
    echo    使用命令查看: netstat -ano ^| findstr ":3002"
) else (
    echo [√] 端口 3002: 可用
    set /a PASS+=1
)

netstat -an | findstr ":8081" >nul
if %errorlevel% equ 0 (
    echo [!] 端口 8081: 已被占用
    echo    使用命令查看: netstat -ano ^| findstr ":8081"
) else (
    echo [√] 端口 8081: 可用
    set /a PASS+=1
)

netstat -an | findstr ":3307" >nul
if %errorlevel% equ 0 (
    echo [√] 端口 3307: MySQL可能在运行
) else (
    echo [!] 端口 3307: 未监听 (MySQL可能未启动)
)
echo.

REM 5. 检查项目文件
echo 5. 项目文件检查
if exist "package.json" (
    echo [√] package.json: 存在
    set /a PASS+=1
) else (
    echo [×] package.json: 不存在
    set /a FAIL+=1
)

if exist "server.js" (
    echo [√] server.js: 存在
    set /a PASS+=1
) else (
    echo [×] server.js: 不存在
    set /a FAIL+=1
)

if exist "client-vue" (
    echo [√] client-vue目录: 存在
    set /a PASS+=1
) else (
    echo [×] client-vue目录: 不存在
    set /a FAIL+=1
)

if exist ".env.production" (
    echo [√] .env.production: 存在
    set /a PASS+=1
) else (
    echo [!] .env.production: 不存在 (需要配置)
)
echo.

REM 6. 检查依赖安装
echo 6. 依赖安装检查
if exist "node_modules" (
    echo [√] node_modules: 已安装后端依赖
    set /a PASS+=1
) else (
    echo [!] node_modules: 未安装后端依赖
    echo    安装命令: npm install
)

if exist "client-vue\node_modules" (
    echo [√] client-vue\node_modules: 已安装前端依赖
    set /a PASS+=1
) else (
    echo [!] client-vue\node_modules: 未安装前端依赖
    echo    安装命令: cd client-vue ^&^& npm install
)
echo.

REM 7. 检查前端构建
echo 7. 前端构建检查
if exist "client-vue\dist" (
    echo [√] client-vue\dist: 前端已构建
    set /a PASS+=1
) else (
    echo [!] client-vue\dist: 前端未构建
    echo    构建命令: cd client-vue ^&^& npm run build
)
echo.

REM 总结
echo ======================================
echo   检查完成
echo ======================================
echo 通过: %PASS% 项
echo 失败: %FAIL% 项
echo.

if %FAIL% equ 0 (
    echo [√] 环境检查通过，可以开始部署！
    echo.
    echo 下一步：
    echo   本地测试: 双击 "本地测试启动.cmd"
    echo   部署到云服务器: 运行 "deploy.cmd"
) else (
    echo [!] 发现 %FAIL% 个问题，请修复后再部署
    echo.
    echo 常见问题解决：
    echo 1. 安装Node.js: https://nodejs.org/
    echo 2. 安装依赖: npm install
    echo 3. 安装PM2: npm install -g pm2
    echo 4. 构建前端: cd client-vue ^&^& npm run build
)
echo.
pause
